// app/schedule/zcy_sync.js
'use strict';

const Subscription = require('egg').Subscription;

class ZcySync extends Subscription {
  // 通过 schedule 属性来设置定时任务的执行间隔等配置
  static get schedule() {
    return {
      interval: '1m', // 1分钟执行一次
      type: 'all', // 指定所有的 worker 都需要执行
      immediate: true, // 应用启动后立即执行一次
    };
  }

  // subscribe 是真正定时任务执行时被运行的函数
  async subscribe() {
    const { ctx } = this;
    
    try {
      ctx.logger.info('开始同步政采云订单数据');
      
      // 获取上次同步时间
      let lastSyncTime = null;
      if (ctx.app.redis && typeof ctx.app.redis.get === 'function') {
        lastSyncTime = await ctx.app.redis.get('zcy:last_sync_time') || null;
      }
      
      // 调用同步服务
      const result = await ctx.service.zcySyncService.syncZcyOrders({
        lastSyncTime
      });
      
      // 记录同步时间
      const currentTime = new Date().toISOString();
      if (ctx.app.redis && typeof ctx.app.redis.set === 'function') {
        await ctx.app.redis.set('zcy:last_sync_time', currentTime);
      }
      
      ctx.logger.info(`政采云数据同步完成: ${result.newOrders} 条新订单, ${result.updatedOrders} 条更新订单`);
    } catch (error) {
      ctx.logger.error('政采云数据同步失败:', error);
    }
  }
}

module.exports = ZcySync;